package ru.payment.wm.impl.response;

/**
 *
 * User: sergey
 * Date: 14.04.2009
 * Time: 21:44:25
 * 
 */
public enum ReturnCode {

  INVALID_COMMAND_FORMAT(-100, "общая ошибка при разборе команды. неверный формат команды"),
  WRONG_IP(-110, "запросы отсылаются не с того IP адреса, который указан при регистрации данного интерфейса"),
  INCORRECT_REQN(-1, "неверное значение поля w3s.request/reqn"),
  INCORRECT_SIGN(-2, "неверное значение поля w3s.request/sign"),
  INCORRECT_TRANID(-3, "неверное значение поля w3s.request/trans/tranid"),
  INCORRECT_PURSE_SRC(-4, "неверное значение поля w3s.request/trans/pursesrc"),
  INCORRECT_PURSE_DEST(-5, "неверное значение поля w3s.request/trans/pursedest"),
  INCORRECT_AMOUNT(-6, "неверное значение поля w3s.request/trans/amount"),
  INCORRECT_DESC(-7, "неверное значение поля w3s.request/trans/desc"),
  PCODE_TOO_LONG(-8, "слишком длинное поле w3s.request/trans/pcode"),
  PCODE_MUST_HAVE_VALUE_PERIOD_GT0(-9, "поле w3s.request/trans/pcode не должно быть пустым если w3s.request/trans/period > 0"),
  PCODE_MUST_BE_EMPTY_PERIOD_EQ0(-10, "поле w3s.request/trans/pcode должно быть пустым если w3s.request/trans/period = 0"),
  INCORRECT_WMINVID(-11, "неверное значение поля w3s.request/trans/wminvid"),
  WMID_IS_NOT_REGISTERED(-12, "идентификатор переданный в поле w3s.request/wmid не зарегистрирован"),
  SIGN_IS_NOT_ACCEPTED(-14, "проверка подписи не прошла"),
  WRONG_WMID(-15, "неверное значение поля w3s.request/wmid"),
  REQN_IS_NOT_ORDERED(102, "не выполнено условие постояного увеличения значения параметра w3s.request/reqn"),
  REPEATED_TRANSACTION(103, "трансакция с таким значением поля w3s.request/trans/tranid уже выполнялась"),
  FRAUD_WMID(111, "попытка перевода с кошелька не принадлежащего WM ID, которым подписывается запрос"),
  INNER_TRANSACTION_ERROR4(4, "Внутренняя ошибка при создании трансакции"),
  INNER_TRANSACTION_ERROR15(15, "Внутренняя ошибка при создании трансакции"),
  INNER_TRANSACTION_ERROR19(19, "Внутренняя ошибка при создании трансакции"),
  INNER_TRANSACTION_ERROR23(23, "Внутренняя ошибка при создании трансакции"),
  SENDER_WMID_IS_NOT_FOUND(5, "Идентификатор отправителя не найден"),
  CORRESPONDENT_IS_NOT_FOUND(6, "Корреспондент не найден"),
  RECIPIENT_PURSE_IS_NOT_FOUND(7, "Кошелек получателя не найден"),
  SENDER_PURSE_IS_NOT_FOUND(11, "Кошелек отправителя не найден"),
  AMOUNT_MUST_BE_GT0(13, "Сумма трансакции должна быть больше нуля"),
  NO_MONEY(17, "Не достаточно денег в кошельке для выполнения операции"),
  NO_ORDER(21, "Счет, по которому совершается оплата, не найден"),
  PROTECTION_IS_NOT_ALLOWED(22, "По указанному счету оплата с протекцией не возможна"),
  ORDER_TIMED_OUT(25, "Время действия оплачиваемого счета закончилось"),
  PURSES_ARE_EQUAL(26, "В операции должны участвовать разные кошельки"),
  DIFFERENT_PURSE_TYPES(29, "Типы кошельков отличаются"),
  DIRECT_TRANSFER_IS_NOT_ACCEPTED(30, "Кошелек не поддерживает прямой перевод"),
  PAYER_IS_NOT_AUTHORIZED(35, "Плательщик не авторизован корреспондентом для выполнения данной операции"),
  TELEPAT_LIMIT(58, "Превышен лимит средств на кошельках получателя, который использует системы Телепат(C 01.06.2008 в системе Телепат вводятся финансовые ограничения для владельцев аттестата ниже начального)"),

  OK(0, "запрос выполнен"),
  NO_ACCESS(110, "нет доступа к интерфейсу");

  private int value;
  private String description;

  private ReturnCode(int v, String d) {
    value = v;
    description = d;
  }

  public int getValue() {
    return value;
  }

  public String getDescription() {
    return description;
  }

  public static ReturnCode getByValue(int v) {
    switch(v) {
      case 0: return OK;
    }
    return null;
  }

}
